www.gusucode.com > 2种方案的VC++ 界面换肤模块源码程序 > 2种方案的VC++ 界面换肤模块/界面换肤模块/界面换肤模块/方案1/ChangeSkin/ChangeSkin.cpp
// ChangeSkin.cpp : Defines the class behaviors for the application. // /************************************* 版权所有: 吉林省明日科技有限公司 完成日期: 2010-09-15 项目出处: 编程词典 服务社区: www.mingribook.com 学习社区: www.mrbccd.com *************************************/ #include "stdafx.h" #include "ChangeSkin.h" #include "ChangeSkinDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CChangeSkinApp BEGIN_MESSAGE_MAP(CChangeSkinApp, CWinApp) //{{AFX_MSG_MAP(CChangeSkinApp) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CChangeSkinApp construction CChangeSkinApp::CChangeSkinApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance } ///////////////////////////////////////////////////////////////////////////// // The one and only CChangeSkinApp object CChangeSkinApp theApp; ///////////////////////////////////////////////////////////////////////////// // CChangeSkinApp initialization BOOL CChangeSkinApp::InitInstance() { AfxEnableControlContainer(); // Standard initialization // If you are not using these features and wish to reduce the size // of your final executable, you should remove from the following // the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif AlterSkin("./SkinOne.ski"); // m_LoadDll = TRUE; /* m_Instance = LoadLibrary("./SkinOne.ski"); fCreateSkinObj CreateSkinObj=NULL; try { CreateSkinObj = (fCreateSkinObj)GetProcAddress(m_Instance,"CreateSkinObj"); } catch (...) { m_LoadDll = FALSE; } if (CreateSkinObj == NULL) m_LoadDll = FALSE; else pSkin = CreateSkinObj(); */ CChangeSkinDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: Place code here to handle when the dialog is // dismissed with OK } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } // Since the dialog has been closed, return FALSE so that we exit the // application, rather than start the application's message pump. return FALSE; } BOOL CChangeSkinApp::AlterSkin(LPCTSTR lpFileName) { HINSTANCE hTemp; hTemp= LoadLibrary(lpFileName); fCreateSkinObj CreateSkinObj=NULL; try { CreateSkinObj = (fCreateSkinObj)GetProcAddress(hTemp,"CreateSkinObj"); } catch (...) { m_LoadDll = FALSE; return FALSE; } if (CreateSkinObj == NULL) { return FALSE; } else { if (m_LoadDll) { pSkin->Release(); FreeLibrary(m_Instance); } m_LoadDll = TRUE; m_Instance = hTemp; pSkin = CreateSkinObj(); return TRUE; } } int CChangeSkinApp::ExitInstance() { if (m_LoadDll) { pSkin->Release(); FreeLibrary(m_Instance); } return CWinApp::ExitInstance(); }